﻿#include "QCefRenderApp.h"

//////////////////////////////////////////////////////////////////////////
//
QCefRenderApp * QCefRenderApp::ms_instance = nullptr;


//////////////////////////////////////////////////////////////////////////
//
QCefRenderApp::QCefRenderApp()
{
    QCEF_DEBUG();

    //...

    //保存第一个实例
    if (ms_instance == nullptr)
    {
        ms_instance = this;
    }
}

QCefRenderApp::~QCefRenderApp()
{
    QCEF_DEBUG();

    //
    if (ms_instance == this)
    {
        ms_instance = nullptr;
    }

    //...

}


//////////////////////////////////////////////////////////////////////////
//CefApp
void QCefRenderApp::OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr<CefCommandLine> command_line)
{
    QCEF_DEBUG();

    //
    QCefConfig * cfg = QCefConfig::instance();
    if (cfg != nullptr)
    {
        QCefConfig::ArgsMap& args = cfg->getArgs();
        for (QCefConfig::ArgsMap::iterator it = args.begin(); it != args.end(); it++)
        {
            if (!it->first.empty() && !command_line->HasSwitch(it->first))
            {
                if (!it->second.empty())
                {
                    command_line->AppendSwitchWithValue(it->first, it->second);
                }
                else
                {
                    command_line->AppendSwitch(it->first);
                }
            }
        }
    }    
}

CefRefPtr<CefRenderProcessHandler> QCefRenderApp::GetRenderProcessHandler() 
{
    QCEF_DEBUG();

    return this;
}

